package com.qf.test.test.aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

//声明这个类是一个切面类 里面会包含切入点（pointcut）和通知(advice)
@Aspect
//注册成spring的javaBean
@Component
public class MyAspect {
    //配置切入点
    @Pointcut("execution(* com.qf.test.test.service.UserServiceImpl.*(..))")
    public void pc(){}


    /**
     * 前置通知
     * 先执行前置通知的额外功能
     * 在执行核心业务方法
     */
    @Before("pc()")
    public void MyBefore(){
        System.out.println("---执行了before前置通知-----   相当于执行方法前开启事务-----");
    }

    /**
     * 后置通知
     * 先执行核心业务方法
     * 在执行后置通知的额外功能
     */
        @After("pc()")
    public void myAfter(){
            System.out.println("--执行了after后置通知--  相当于执行了方法后提交事务--");
        }
}
